package com.java.struts.user.dao;


import com.java.struts.base.exception.BusinessException;
import com.java.struts.base.util.HibernateUtil;
import com.java.struts.user.entity.UserinfoEntity;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

import javax.xml.ws.Action;
import java.util.ArrayList;
import java.util.List;

/**
 * 用户表的数据库操作
 * */
public class UserInfoDao {

    /**
     * 添加用户
     * */
    public void userAdd(UserinfoEntity user){
        Session session = null;
        try{
            //调用uti得到session
             session = HibernateUtil.getSession();
            //开启事务
            Transaction transaction = session.beginTransaction();
            //调用save 进行添加用户
            session.save(user);
            //提交事务
            transaction.commit();
        }catch(Exception e){
            throw  new BusinessException("数据库异常 异常信息：16431");
        }
    }
    /**
     * 查询
     * 根据用户名和 密码查询
     *
     *  外键 条件查询 用的所以信息
     * */
    public UserinfoEntity userQuery(UserinfoEntity user){
        UserinfoEntity userinfo = null;
        try {
            // 定义要执行的sql 语句
            String mySql = "from UserinfoEntity where userNo=?1 and upwd=?2";
            //获取query
            Query query = HibernateUtil.getQuery(mySql);
            //给？号赋值
            query.setParameter(1, user.getUserNo());
            query.setParameter(2, user.getUpwd());
            //执行
            userinfo = (UserinfoEntity)query.uniqueResult();
        }catch(Exception e){
            throw  new BusinessException("数据库异常 异常信息：13131");
        }
        return userinfo;
    }

    /***
     *  查询用的全部数据
     * @return
     */
    public List<UserinfoEntity> userSelect(){
        //创建List 集合
        List<UserinfoEntity> userList = new ArrayList<>();
        try{
            //定义变量表示要执行的mySql 语句
            String mySql = "from UserinfoEntity";
            //得到Query
            Query query = HibernateUtil.getQuery(mySql);
            //将数据存list集合中
            userList = query.list();
        }catch (Exception e){
            throw  new BusinessException("数据库异常 异常信息：131454");
        }
     //返回数据
     return userList;
    }
     /**
     *  删除用户
     * */
    public void userDel(int userId){
        Session session = null;
        try{
            // 得到session
            session = HibernateUtil.getSession();
            //开启事务
            Transaction transaction = session.beginTransaction();
            // 创建实体类
            UserinfoEntity userinfoEntity = new UserinfoEntity();
            // 绑定 要删除的字段
            userinfoEntity.setUid(userId);
            // 执行
            session.delete(userinfoEntity);
            // 提交事务
            transaction.commit();
        }catch (Exception e){
            throw  new BusinessException("数据库异常 异常信息：15451");
        }
    }

    /***
         修改的方法
     * @param user
     */
    public void userUpd(UserinfoEntity user){
        Session session = null;
        try{
            // 的到session 工厂
            session = HibernateUtil.getSession();
            //开启事务
           Transaction transaction =session.beginTransaction();
            // 执行修改语句
            session.update(user);
            // 提交事务
            transaction.commit();
        }catch (Exception e){
            throw  new BusinessException("数据库异常 异常信息：148456");
        }

    }
}
